
#include <stdio.h>
#include "xos.h"

void led_init(void)
{
    int a = 0;

    printf("[%s] %d: a=%d\r\n", __func__, __LINE__, a);
}

device_initcall(led_init);

void led_task_cb(void* arg, uint32_t event)
{
    int a = 0;

    // printf("[%s] %d: a=%d\r\n", __func__, __LINE__, a);
}

void timer_task_cb(void* arg, uint32_t event)
{
    int a = 0;

    printf("[%s] %d: a=%d\r\n", __func__, __LINE__, a);
}

void key_task_cb(void* arg, uint32_t event)
{
    int a = 0;

    // printf("[%s] %d: a=%d\r\n", __func__, __LINE__, a);
}

void xos_demo(void)
{
    // 普通任务创建
    static task_t task_led = {
        .func = led_task_cb,
        .mode = TASK_LOOP,
    };

    xos_task_add(&task_led);
    xos_task_start(&task_led);

    printf("[%s] %d: task_led=%x\r\n", __func__, __LINE__, &task_led);
    // 定时任务创建
    static task_t task_timer = {
        .func   = timer_task_cb,
        .mode   = TASK_REPEAT,
        .period = 500,
    };

    xos_task_add(&task_timer);
    xos_task_start(&task_timer);
    printf("[%s] %d: task_timer=%x\r\n", __func__, __LINE__, &task_timer);

    // key定时任务创建
    static task_t task_key = {
        .func   = key_task_cb,
        .mode   = TASK_REPEAT,
        .period = 5,
    };

    xos_task_add(&task_key);
    xos_task_start(&task_key);
    printf("[%s] %d: task_key=%x\r\n", __func__, __LINE__, &task_key);

    printf("[%s] %d: \r\n", __func__, __LINE__);
}
